package cn.wzc.crystal.platform.query;

import java.util.List;
import java.util.Map;

public interface QueryService {

	/**
	 * 列表查询
	 *
	 * @param name     查询命名
	 * @param context  查询编译上下文
	 * @param dtoClass 返回的数据传输对象
	 * @param <Dto>    数据传输对象类型
	 * @return 数据传输对象集合
	 */
	<Dto> List<Dto> queryList(String name, Map<String, Object> context, Class<Dto> dtoClass);

	/**
	 * 列表查询
	 *
	 * @param name     查询命名
	 * @param context  查询编译上下文
	 * @param page     分页页码
	 * @param size     分页页长
	 * @param dtoClass 返回的数据传输对象
	 * @param <Dto>    数据传输对象类型
	 * @return 数据传输对象集合
	 */
	<Dto> QueryPageResult<Dto> queryPage(String name, Map<String, Object> context, int page, int size, Class<Dto> dtoClass);
}
